﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using Entidades;
using Web.Extensions;
using Web.Helpers;
using Web.Helpers.jqGridHelpers;
using Common;
using Controladores;
using Entidades.jSON;

namespace Web.Pages
{
    public partial class Reclamos : BasePage
    {
        #region Events

        protected new void Page_Load(object sender, EventArgs e)
        {
            base.Page_Load(sender, e);

            if (!Page.IsPostBack)
            {
                this.CargarPagina();
            }
        }

        #endregion

        #region Private Methods

        private void CargarPagina()
        {
            var estadosReclamo = EstadosReclamo.ObtenerTodos();
            this.selEstadoReclamo.Bind(estadosReclamo, "Id", "Texto");
        }

        #endregion

        #region Web Methods

        [WebMethod]
        public static string obtenerReclamos(int pageSize, int currentPage, string sortColumn, string sortOrder, string search, string searchFilter, string colModel, bool isExport)
        {
            var respuesta     = string.Empty;
            try
            {
                var gridData = new GridDataHelper<Reclamo>().GetData(searchFilter, colModel, currentPage, pageSize, sortOrder, sortColumn);

                #region Construir set de datos
                var lista = from Reclamo item in gridData.Data
                            select new object[]
                            {
                                item.Id,
                                BasePage.CrearBoton(WellKnownKeys.Grid.Actions.VER, "Reclamo", item.Id,WellKnownKeys.Images.Icons.VER),
                                item.Pago.Id,
                                item.Pago.Guion.Id,
                                item.Pago.Guion.Episodio,
                                BasePage.CrearLink(WellKnownKeys.Grid.Actions.EDITAR + "Guion", item.Pago.Guion.Id, Formatter.Text.ReducirTexto(item.Pago.Guion.Titulo, 40)),
                                item.Pago.Proveedor.Id,
                                BasePage.CrearLink(WellKnownKeys.Grid.Actions.EDITAR + "Usuario", item.Pago.Proveedor.Id, BasePage.MostrarNombreCompleto(item.Pago.Proveedor)),
                                item.Fecha,
                                item.Estado.Id,
                                item.Estado.Nombre
                            };
                var jqGridData = new jqGridData(gridData.TotalRecords, gridData.TotalPages, gridData.CurrentPage, lista);
                #endregion

                respuesta = Formatter.JSON<jqGridData>.Serialize(jqGridData);
            }
            catch (Exception ex)
            {
                LogError(ex);
                respuesta = "Hubo un error al intentar obtener los Reclamos." + Environment.NewLine + ex.Message;
            }
            return respuesta;
        }
        
        #endregion
    }
}